<?php

class QuestionarioEixoController extends Controller
{
    public $layout='//layouts/column2';

    public function filters()
    {
        return array(
            'accessControl',
        );
    }

    public function accessRules()
    {
        return array(
            array(
                'allow',
                'actions'=>array('admin','delete','adicionaEixo'),
                'expression'=>'Yii::app()->user->isAdmin',
            ),
            array(
                'deny',
                'users'=>array('*'),
            ),
        );
    }

    public function actionAdmin($q)
    {
        $model = new QuestionarioEixo('search');
        $model->unsetAttributes();
        $model->id_questionario = $q;
        
        $questionario = Questionario::model()->findByPk($q);
        
        $this->render('admin',array(
            'model'=>$model,
            'questionario'=>$questionario,
        ));        
    }
    
    public function actionDelete($q,$e)
    {
        if(Yii::app()->request->isPostRequest)
        {
            $this->loadModel($q,$e)->delete();
            
            if(!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
        }else
        {
            throw new CHttpException('400','Requisição Inválida');
        }
    }
    
    public function actionAdicionaEixo($q)
    {
        $model = new QuestionarioEixo;
        $model->id_questionario = $q;
        $this->performAjaxValidation($model);
        $flag = true;
        
        if(isset($_POST['QuestionarioEixo']))
        {
            $model->attributes = $_POST['QuestionarioEixo'];            
            $buscaEixo = QuestionarioEixo::model()->find('id_questionario = :q AND id_eixo = :e',array(':q'=>$model->id_questionario,':e'=>$model->id_eixo));
            $flag = false;
            
            if($buscaEixo === null)
            {
                if($model->validate())
                {
                    if($model->save())
                    {
                        Yii::app()->user->setFlash('sucesso','Eixo adicionado com sucesso!');
                        $this->redirect(array('admin/questionarioEixo/admin','q'=>$q));
                    }else
                    {
                        Yii::app()->user->setFlash('erro','Erro ao adicionar eixo!');
                        $this->redirect(array('admin/questionarioEixo/admin','q'=>$q));
                    }
                }else
                {
                    Yii::app()->user->setFlash('erro','Eixo não selecionado!');
                    $this->redirect(array('admin/questionarioEixo/admin','q'=>$q));
                }
            }else
            {
                Yii::app()->user->setFlash('aviso','O questionário já possui o eixo selecionado! Tente novamente.');
                $this->redirect(array('admin/questionarioEixo/admin','q'=>$q));
            }
        }
        
        if($flag)
            $this->renderPartial('adicionaEixo',array('model'=>$model,'questionario'=>$q),false,true);
    }
    
    public function loadModel($q,$e)
    {
        $model = QuestionarioEixo::model()->find('id_questionario = :q AND id_eixo = :e',array(':q'=>$q,':e'=>$e));
        
        if($model === null)
        {
            throw new CHttpException(404,'Eixo do Questionário Inválido');
        }
        
        return $model;
    }
    
    public function performAjaxValidation($model)
    {
        if(isset($_POST['ajax']) && $_POST['ajax']==='add-eixo-form') 
        { 
            echo CActiveForm::validate($model); 
            Yii::app()->end(); 
        } 
    }
}